package models

// 设备配置
type Serial_Slave_Detail struct {
	ID                      int64               `gorm:"not null;column:ID;PRIMARY_KEY"`
	Serial_ID               int64               `gorm:"not null;column:Serial_ID"`       //串口配置的外键
	Serial_Slave_ID         int64               `gorm:"not null;column:Serial_Slave_ID"` //外键
	CollectName             *string             `gorm:"-" `
	Name                    string              `gorm:"not null;column:Name"`
	Describe                *string             `gorm:"column:Describe"`
	Code                    *string             `gorm:"column:Code"` //DLT645用
	CollectAddressID        *int64              `gorm:"not null;column:CollectAddressID"`
	Type                    int64               `gorm:"not null;column:Type"` //1:功能码1 2：功能码2 3：功能码3 4：功能码4 0：DLT645RTU 10:西门子S7 11:cj188
	DeviceInfo_Detail       []DeviceInfo_Detail `gorm:"foreignKey:Serial_Slave_Detail_ID;references:ID;constraint:OnDelete:CASCADE"`
	Value                   string              `gorm:"-" `                             //采集的数据 临时展示 最终上报
	Value2                  *string             `gorm:"-" `                             //采集的真实数据 临时展示
	Value3                  *string             `gorm:"-" `                             //原始数据
	CreateTime              string              `gorm:"-" `                             //采集的时间 临时展示
	DI3                     *string             `gorm:"-" `                             //DI3
	DI2                     *string             `gorm:"-" `                             //DI2
	DI1                     *string             `gorm:"-" `                             //DI1
	DI0                     *string             `gorm:"-" `                             //DI0
	ValueType               *int                `gorm:"column:ValueType;"`              //数据类型 -1:函数计算
	ValueStructure          *int                `gorm:"column:ValueStructure;"`         //数据结构 1:AB 2:BA 3:ABCD 4:BADC 5:CDAB 6:DCBA 7:低字节在后 8:低字节在前
	Formula                 *string             `gorm:"column:Formula;"`                //计算公式 当数据类型为-1时启用
	SiemensType             *int                `gorm:"column:SiemensType;"`            //西门子通道类型 1：I 2：Q 3:M 4:DB
	SiemensAdress           string              `gorm:"column:SiemensAdress;"`          //西门子通道地址 有小数点的是DB 比如100.1 = DB100.1
	CJ188DecimalPointOffset *int                `gorm:"column:CJ188DecimalPointOffset"` //cj188小数点偏移位数
	CJ188CType              *int                `gorm:"column:CJ188CType;"`             //cj188的采集类型  1：累计用量(冷水水表) 2:本月用量(冷水水表)3:结算日热量(热量表)4:当前热量(热量表)5:热功率(热量表)6:瞬时热量(热量表)7:当前累计流量(热量表)8:供水温度(热量表)9:回水温度(热量表)
	//Serial        Serial `gorm:"foreignKey:Serial_ID"` // 使用 CateId 作为外键 // 和文章分类建立关系
}

// 配置数据库操作的表名称
func (Serial_Slave_Detail) TableName() string {
	return "Serial_Slave_Detail"
}

// 添加外键关联和级联删除规则 AfterDelete BeforeDelete
// func (d Serial_Slave_Detail) AfterDelete(tx *gorm.DB) (err error) {
// 	// 执行级联删除
// 	fmt.Println("d.Serial_Slave_Detail", d)
// 	if d.ID != 0 {
// 		tx.Delete(&DeviceInfo_Detail{}, "Serial_Slave_Detail_ID", d.ID)
// 	}
// 	return
// }

type EditSerialSlaveDetailRequest struct {
	Serial_Slave_Detail Serial_Slave_Detail `json:"SerialSlaveDetail"`
}
